#pragma once
#include <iostream>
#include <mysql.h>
#include <chrono>
using namespace std;
using namespace chrono;


//	将Mysql给我们的提供的API做一个封装

class MysqlOperation {
public:
	//	初始化数据库连接
	MysqlOperation();
	//	释放数据库连接
	~MysqlOperation();
	//	连接数据库
	bool connect(string user, string passwd, string da_name, string ip, unsigned short port = 3306);
	//	更新数据库：insert、update、delete
	bool update(string sql);
	//	查询数据库
	bool query(string sql);
	//	遍历查询得到的结果集
	bool next();
	//	得到结果集中的字段值
	string value(int index);
	//	事务操作
	bool transaction();
	//	提交事务
	bool commit();
	//	事务回滚
	bool rollback();

	//	刷新起始空闲的时间点
	void refresh_alive_time();
	//	计算连接存活的总时长
	long long get_alive_time();

private:
	//	释放结果集数据内存
	void free_result();
private:
	MYSQL* m_conn = nullptr;				//	数据库句柄
	MYSQL_RES* m_res = nullptr;				//	结果集
	MYSQL_ROW m_row = nullptr;				//	数据行

	steady_clock::time_point m_alive_time;	//	使用绝对时钟
};